home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / pcboard / horse140.zip / HORSES.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-10-24  |  24KB  |  880 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     Integer  INTEGER003
  26.     Integer  TINTEGER004(99)
  27.     Integer  INTEGER005
  28.     Integer  INTEGER006
  29.     Integer  INTEGER007
  30.     Integer  INTEGER008
  31.     Integer  INTEGER009
  32.     Integer  INTEGER010
  33.     Integer  INTEGER011
  34.     Integer  TINTEGER012(99)
  35.     Integer  INTEGER013
  36.     Integer  INTEGER014
  37.     Integer  INTEGER015
  38.     Integer  INTEGER016
  39.     Integer  INTEGER017
  40.     Integer  INTEGER018
  41.     Integer  INTEGER019
  42.     Integer  INTEGER020
  43.     Integer  INTEGER021
  44.     Integer  INTEGER022
  45.     Integer  INTEGER023
  46.     Integer  INTEGER024
  47.     Integer  INTEGER025
  48.     Integer  INTEGER026
  49.     Integer  TINTEGER027(5)
  50.     Integer  INTEGER028
  51.     Integer  INTEGER029
  52.     Integer  INTEGER030
  53.     Integer  INTEGER031
  54.     Integer  INTEGER032
  55.     Integer  INTEGER033
  56.     Integer  INTEGER034
  57.     Integer  INTEGER035
  58.     Integer  INTEGER036
  59.     Integer  INTEGER037
  60.     Integer  INTEGER038
  61.     Integer  INTEGER039
  62.     Money    MONEY001
  63.     Money    MONEY002
  64.     Money    MONEY003
  65.     Money    MONEY004
  66.     Real     TREAL001(5)
  67.     String   STRING001
  68.     String   STRING002
  69.     String   STRING003
  70.     String   STRING004
  71.     String   STRING005
  72.     String   STRING006
  73.     String   TSTRING007(5)
  74.     String   TSTRING008(5)
  75.     String   TSTRING009(5)
  76.     String   TSTRING010(5)
  77.     String   STRING011
  78.     String   STRING012
  79.     String   STRING013
  80.     String   STRING014
  81.     String   STRING015
  82.     String   STRING016
  83.     String   STRING017
  84.     String   TSTRING018(51,3)
  85.     String   TSTRING019(51,3)
  86.     String   STRING020
  87.     String   STRING021
  88.     String   STRING022
  89.     String   STRING023
  90.     String   STRING024
  91.     String   TSTRING025(3)
  92.     String   TSTRING026(3)
  93.     String   STRING027
  94.  
  95. ;------------------------------------------------------------------------------
  96.  
  97.     STRING005 = "v1.4"
  98.     STRING004 = "Horse Race"
  99.     STRING001 = STRING004
  100.     If (AnsiOn()) Goto LABEL001
  101.     PrintLn 
  102.     PrintLn "Sorry, this game requires ANSI capability."
  103.     PrintLn 
  104.     End
  105.     :LABEL001
  106.     If (MinLeft() < 5) Then
  107.         PrintLn 
  108.         PrintLn "Sorry, not enough time remaining to play."
  109.         PrintLn 
  110.         End
  111.     Endif
  112.     STRING012 = "@X06Ω"
  113.     MONEY001 = 100000
  114.     MONEY004 = 0
  115.     If (Exist(PPEPath() + PPEName() + ".key")) Then
  116.         FOpen 1, PPEPath() + PPEName() + ".KEY", 0, 0
  117.         FDefIn 1
  118.         For INTEGER002 = 1 To 3
  119.             FDGet TSTRING026(INTEGER002)
  120.         Next
  121.         FClose 1
  122.         FOpen 2, PPEPath() + PPEName() + ".KEY", 0, 0
  123.         FGet 2, STRING002
  124.         FGet 2, STRING003
  125.         FClose 2
  126.         STRING027 = TSTRING026(1) + TSTRING026(2)
  127.         STRING027 = Strip(STRING027, " ")
  128.         For INTEGER003 = 1 To Len(STRING027)
  129.             TINTEGER004(INTEGER003) = Asc(Mid(STRING027, INTEGER003, 1))
  130.         Next
  131.         INTEGER005 = 0
  132.         For INTEGER003 = 1 To 80
  133.             INTEGER005 = INTEGER005 + TINTEGER004(INTEGER003)
  134.         Next
  135.         INTEGER006 = INTEGER005 * 965
  136.         If (INTEGER006 <> TSTRING026(3)) Then
  137.             Goto LABEL002
  138.         Else
  139.         Else
  140.         Endif
  141.         :LABEL002
  142.         BOOLEAN001 = 0
  143.         If (Exist(PPEPath() + "UNI.KEY")) Goto LABEL003
  144.         Gosub LABEL029
  145.         Goto LABEL004
  146.     Endif
  147.     BOOLEAN001 = 1
  148.     Gosub LABEL029
  149.     Goto LABEL004
  150.     :LABEL003
  151.     FOpen 1, PPEPath() + "UNI.KEY", 0, 0
  152.     FDefIn 1
  153.     For INTEGER010 = 1 To 3
  154.         FDGet TSTRING025(INTEGER010)
  155.     Next
  156.     FClose 1
  157.     FOpen 2, PPEPath() + "UNI.KEY", 0, 0
  158.     FGet 2, STRING002
  159.     FGet 2, STRING003
  160.     FClose 2
  161.     STRING024 = TSTRING025(1) + TSTRING025(2)
  162.     STRING024 = Strip(STRING024, " ")
  163.     For INTEGER011 = 1 To Len(STRING024)
  164.         TINTEGER012(INTEGER011) = Asc(Mid(STRING024, INTEGER011, 1))
  165.     Next
  166.     INTEGER008 = 0
  167.     For INTEGER011 = 1 To 99
  168.         INTEGER008 = INTEGER008 + TINTEGER012(INTEGER011)
  169.     Next
  170.     INTEGER009 = INTEGER008 * 659
  171.     INTEGER007 = INTEGER009
  172.     BOOLEAN001 = 0
  173.     If (INTEGER009 <> TSTRING025(3)) Then
  174.         BOOLEAN001 = 0
  175.         Gosub LABEL029
  176.         Goto LABEL004
  177.     Else
  178.         BOOLEAN001 = 1
  179.         Gosub LABEL029
  180.     Endif
  181.     :LABEL004
  182.     GetToken STRING015
  183.     STRING015 = Upper(STRING015)
  184.     GetToken INTEGER036
  185.     If (!BOOLEAN001 || (INTEGER036 == 0)) INTEGER036 = 10
  186.     If (Exist(PPEPath() + "HORSES.NAM")) Goto LABEL005
  187.     PrintLn "@X0C"
  188.     PrintLn "Error in ", PPEName(), ".PPE setup. Please notify your SysOp!"
  189.     PrintLn 
  190.     DefColor
  191.     Log PPEName() + ".PPE: HORSES.NAM file not found!", 0
  192.     End
  193.     :LABEL005
  194.     If (BOOLEAN001) Goto LABEL006
  195.     INTEGER039 = 10
  196.     Goto LABEL007
  197.     :LABEL006
  198.     INTEGER039 = 50
  199.     :LABEL007
  200.     GetUser
  201.     If ((STRING015 == "LOGPPE") || (STRING015 == "LOGBOTH")) Then
  202.         FAppend 1, PPEPath() + "HORSES.LOG", 2, 0
  203.         FPutLn 1, U_Name(), " At ", Time(), " On ", Date()
  204.         FPutLn 1, "----------------------------------------------"
  205.         FClose 1
  206.     Endif
  207.     If ((STRING015 == "LOGCALL") || (STRING015 == "LOGBOTH")) Then
  208.         Log "Entered " + PPEName() + ".PPE at " + Left(Time(), 5), 0
  209.     Endif
  210.     FOpen 1, PPEPath() + "HORSES.NAM", 0, 0
  211.     For INTEGER024 = 1 To 5
  212.         FGet 1, TSTRING007(INTEGER024)
  213.         TSTRING008(INTEGER024) = Left(TSTRING007(INTEGER024), 21)
  214.         TSTRING008(INTEGER024) = RTrim(TSTRING008(INTEGER024), " ")
  215.         TSTRING009(INTEGER024) = Mid(TSTRING007(INTEGER024), 23, 21)
  216.         TSTRING010(INTEGER024) = Mid(TSTRING007(INTEGER024), 46, 10)
  217.         TREAL001(INTEGER024) = Mid(TSTRING007(INTEGER024), 57, 4)
  218.     Next
  219.     FClose 1
  220.     KeyFlush
  221.     If (BOOLEAN001) Goto LABEL008
  222.     For INTEGER024 = 1 To 5
  223.         TSTRING009(INTEGER024) = "Unregistered Stables"
  224.     Next
  225.     :LABEL008
  226.     If (Exist(PPEPath() + "HORSES.DAT")) Goto LABEL009
  227.     FCreate 1, PPEPath() + "HORSES.DAT", 1, 3
  228.     STRING014 = 0
  229.     For INTEGER024 = 1 To 51
  230.         TSTRING018(INTEGER024, 1) = "NotUsed"
  231.         TSTRING018(INTEGER024, 2) = "10/23/96"
  232.         TSTRING018(INTEGER024, 3) = STRING014
  233.         FPutLn 1, TSTRING018(INTEGER024, 1)
  234.         FPutLn 1, TSTRING018(INTEGER024, 2)
  235.         FPutLn 1, TSTRING018(INTEGER024, 3)
  236.         TSTRING019(INTEGER024, 1) = "NotUsed"
  237.         TSTRING019(INTEGER024, 2) = "10-23-96"
  238.         TSTRING019(INTEGER024, 3) = STRING014
  239.     Next
  240.     FClose 1
  241.     :LABEL009
  242.     BOOLEAN002 = 0
  243.     BOOLEAN004 = 1
  244.     FOpen 1, PPEPath() + "HORSES.DAT", 0, 0
  245.     For INTEGER024 = 1 To 50
  246.         FGet 1, TSTRING018(INTEGER024, 1)
  247.         FGet 1, TSTRING018(INTEGER024, 2)
  248.         FGet 1, TSTRING018(INTEGER024, 3)
  249.         If (U_Name() == TSTRING018(INTEGER024, 1)) Then
  250.             If (TSTRING018(INTEGER024, 2) == Left(Date(), 8)) Then
  251.                 PrintLn "@CLS@ @X0F"
  252.                 PrintLn "Sorry, you may only play once per day."
  253.                 PrintLn 
  254.                 End
  255.             Endif
  256.             BOOLEAN002 = 1
  257.             INTEGER037 = INTEGER024
  258.             MONEY001 = ToMoney(TSTRING018(INTEGER024, 3))
  259.             If (MONEY001 < 1) MONEY001 = 100000
  260.         Endif
  261.         If ((!BOOLEAN002 && BOOLEAN004) && (TSTRING018(INTEGER024, 1) == "NotUsed")) Then
  262.             BOOLEAN004 = 0
  263.             INTEGER037 = INTEGER024
  264.         Endif
  265.         If (ToMoney(TSTRING018(INTEGER024, 3)) > MONEY004) Then
  266.             INTEGER038 = INTEGER024
  267.             MONEY004 = TSTRING018(INTEGER024, 3)
  268.             STRING016 = Mixed(TSTRING018(INTEGER024, 1))
  269.         Endif
  270.     Next
  271.     FClose 1
  272.     If (INTEGER037 > INTEGER039) Then
  273.         PrintLn "@X0C"
  274.         STRING023 = "Sorry, maximum allowed users reached."
  275.         PrintLn Space((78 - Len(STRING023)) / 2) + STRING023
  276.         PrintLn 
  277.         If (BOOLEAN001) Goto LABEL010
  278.         Delay 30
  279.         STRING023 = "Your SysOp must register this program in order for you to play."
  280.         PrintLn Space((78 - Len(STRING023)) / 2) + STRING023
  281.         Delay 30
  282.         Goto LABEL011
  283.         :LABEL010
  284.         STRING023 = "Please notify your SysOp!"
  285.         PrintLn Space((78 - Len(STRING023)) / 2) + STRING023
  286.         Log PPEName() + ".PPE: Maximum users reached.", 0
  287.         :LABEL011
  288.         PrintLn 
  289.         Print Space(26)
  290.         Wait
  291.     Else
  292.         :LABEL012
  293.         Cls
  294.         Inc INTEGER028
  295.         :LABEL013
  296.         INTEGER031 = 0
  297.         INTEGER032 = 0
  298.         INTEGER033 = 0
  299.         PrintLn "@X0E┌─────────────────────────────────────────────────────────────────────────────┐"
  300.         PrintLn "@X0E│ @X0A         @X0E  @X05-@X04=@X0C≡@X0E[ @X0APractical Computer International Race Course @X0E]@X0C≡@X04=@X05-      @X0A  @X05   @X0E│"
  301.         PrintLn "@X0E├─[@X0BOdds@X0E]─┬─[@X0BTrack@X0E]┬────────────[@X0BRace Results@X0E]──────────┬─────[@X0BYour Bet@X0E]───────┤"
  302.         PrintLn "@X0E│ @X0A1.@X0E     │        │ 1st *                              │ @X0AAmount $             @X0E│"
  303.         PrintLn "@X0E│ @X0A2.@X0E     ├─[@X0BDist@X0E]─┤ @X072nd *                              @X0E│ @X0DHorse  #             @X0E│"
  304.         PrintLn "@X0E│ @X0A3.@X0E     │        │ @X063rd *                              @X0E│ @X02Paid   $             @X0E│"
  305.         PrintLn "@X0E│ @X0A4.@X0E     ├─[@X0BRace@X0E]─┼────────────────────────────────────┼─[@X0BYour Cash On Hand@X0E]──┤"
  306.         PrintLn "@X0E│ @X0A5.@X0E     │  #     │                                    │                      │"
  307.         PrintLn "@X0E└────────┴────────┴────────────────────────────────────┴──────────────────────┘"
  308.         If (MONEY004 == 0) Then
  309.             PrintLn "                                                                               "
  310.         Else
  311.             STRING017 = "@X0FScore to beat is " + String(MONEY004) + " by " + STRING016
  312.             PrintLn Space((80 - Len(STRING017)) / 2), STRING017
  313.         Endif
  314.         PrintLn "@X0E┌─────────────────────────────────────────────────────────────────────────────┐"
  315.         PrintLn "@X0E│ Race #                  @X05-@X04=@X0C≡@X0E[ @X0AOFFICIAL PROGRAM @X0E]@X0C≡@X04=@X05-                   @X07@X0E1 Mile @X0E│"
  316.         PrintLn "@X0E├─────────────────────────────────────────────────────────────────────────────┤"
  317.         PrintLn "@X0E│ @X0A# @X0E│ @X03HORSE NAME           @X0E│ @X09HORSE OWNER NAME      @X0E│ @X0DLAST FINISH @X0E│ @X0AWINS │ @X03ODDs@X0E│"
  318.         PrintLn "@X0E│───│──────────────────────│───────────────────────│─────────────│──────│─────│"
  319.         PrintLn "@X0E│ @X0A1 @X0E│                      │                       │             │      │     │"
  320.         PrintLn "@X0E│ @X0A2 @X0E│                      │                       │             │      │     │"
  321.         PrintLn "@X0E│ @X0A3 @X0E│                      │                       │             │      │     │"
  322.         PrintLn "@X0E│ @X0A4 @X0E│                      │                       │             │      │     │"
  323.         PrintLn "@X0E│ @X0A5 @X0E│                      │                       │             │      │     │"
  324.         PrintLn "@X0E└─────────────────────────────────────────────────────────────────────────────┘"
  325.         PrintLn "@POFF@                                                                               "
  326.         AnsiPos 23, 8
  327.         PrintLn "@X0FWelcome to a day at the races!"
  328.         AnsiPos 8, 12
  329.         Print "@X06", INTEGER028, " of ", INTEGER036
  330.         Gosub LABEL016
  331.         :LABEL014
  332.         AnsiPos 1, 22
  333.         STRING011 = ""
  334.         InputStr "Enter your Horse number <1-5> (Q=Quit) ", STRING011, 15, 1, "12345AaQq", 0
  335.         If ((STRING011 == "Q") || (STRING011 == "q")) Goto LABEL026
  336.         If ((STRING011 == "A") || (STRING011 == "a")) Goto LABEL030
  337.         If ((STRING011 < "1") || (STRING011 > "5")) Goto LABEL014
  338.         AnsiPos 66, 5
  339.         PrintLn " @X0E(@X8E", STRING011, "@X0E)"
  340.         :LABEL015
  341.         AnsiPos 1, 22
  342.         PrintLn "@X0EPlease enter your Wager                             "
  343.         AnsiPos 25, 22
  344.         MONEY002 = 0
  345.         InputStr "", MONEY002, 14, 10, "1234567890", 0
  346.         If ((MONEY002 > MONEY001) || (MONEY002 == 0)) Then
  347.             Goto LABEL015
  348.         Endif
  349.         AnsiPos 1, 22
  350.         PrintLn "                                                    "
  351.         AnsiPos 65, 4
  352.         PrintLn "@X0A", MONEY002
  353.         Goto LABEL017
  354.         :LABEL016
  355.         Print "@X0E"
  356.         INTEGER021 = 1
  357.         For INTEGER025 = 16 To 20
  358.             AnsiPos 7, INTEGER025
  359.             PrintLn TSTRING008(INTEGER021)
  360.             Inc INTEGER021
  361.         Next
  362.         INTEGER021 = 1
  363.         For INTEGER025 = 16 To 20
  364.             AnsiPos 30, INTEGER025
  365.             PrintLn TSTRING009(INTEGER021)
  366.             Inc INTEGER021
  367.         Next
  368.         For INTEGER025 = 0 To 5
  369.             TINTEGER027(INTEGER025) = Random(5) + 1
  370.             If (TINTEGER027(INTEGER025) == "1") Then
  371.                 TINTEGER027(INTEGER025) = Random(5) + 1
  372.             Endif
  373.         Next
  374.         INTEGER021 = 1
  375.         For INTEGER025 = 16 To 20
  376.             AnsiPos 75, INTEGER025
  377.             Print TINTEGER027(INTEGER021), ":1"
  378.             AnsiPos 6, INTEGER025 - 12
  379.             Print TINTEGER027(INTEGER021), ":1"
  380.             Inc INTEGER021
  381.         Next
  382.         AnsiPos 59, 8
  383.         Print MONEY001
  384.         INTEGER029 = Random(3)
  385.         Select Case (INTEGER029)
  386.             Case "0"
  387.                 STRING006 = "@X04WET!@X00"
  388.             Case "1"
  389.                 STRING006 = "@X0CSLOW!@X00"
  390.             Case "2"
  391.                 STRING006 = "@X03DRY!@X00"
  392.             Case "3"
  393.                 STRING006 = "@X0BFAST!@X0B"
  394.         End Select
  395.         AnsiPos 13, 4
  396.         PrintLn STRING006
  397.         AnsiPos 12, 6
  398.         PrintLn "@X0E1 Mile@X00"
  399.         AnsiPos 15, 8
  400.         Print "@X06", INTEGER028
  401.         INTEGER021 = 1
  402.         For INTEGER025 = 16 To 20
  403.             AnsiPos 54, INTEGER025
  404.             PrintLn "@X0D", TSTRING010(INTEGER021)
  405.             Inc INTEGER021
  406.         Next
  407.         For INTEGER025 = 1 To 5
  408.             TSTRING010(INTEGER025) = "    --  "
  409.         Next
  410.         INTEGER021 = 1
  411.         For INTEGER025 = 16 To 20
  412.             AnsiPos 69, INTEGER025
  413.             PrintLn "@X0A", FmtReal(TREAL001(INTEGER021), 2, 0)
  414.             Inc INTEGER021
  415.         Next
  416.         Return
  417.         :LABEL017
  418.         AnsiPos 59, 8
  419.         Print "@X0E", ToMoney(MONEY001 - MONEY002), "    "
  420.         AnsiPos 20, 8
  421.         PrintLn "@X0CThe gates are open, and they're off!@X00"
  422.         AnsiPos 0, 10
  423.         PrintLn "@X0BStart                  1/4              1/2              3/4             Finish"
  424.         PrintLn "@X09▄▄▄▄@X09▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"
  425.         PrintLn "@X09█ @X0F1 @X09█  @X0D█                                                                   @X0E█  @X09█"
  426.         PrintLn "@X09█───@X09█--@X0D█@X09----------------┼----------------┼----------------┼----------------@X0E█@X09--█"
  427.         PrintLn "@X09█ @X0F2 @X09█  @X0D█                                                                   @X0E█  @X09█"
  428.         PrintLn "@X09█───@X09█--@X0D█@X09----------------┼----------------┼----------------┼----------------@X0E█@X09--@X09█"
  429.         PrintLn "@X09█ @X0F3 @X09█  @X0D█                                                                   @X0E█  @X09█"
  430.         PrintLn "@X09█───@X09█--@X0D█@X09----------------┼----------------┼----------------┼----------------@X0E█@X09--█"
  431.         PrintLn "@X09█ @X0F4 @X09█  @X0D█                                                                   @X0E█  @X09█"
  432.         PrintLn "@X09█───@X09█--@X0D█@X09----------------┼----------------┼----------------┼----------------@X0E█@X09--█"
  433.         PrintLn "@X09█ @X0F5 @X09█  @X0D█                                                                   @X0E█  @X09█"
  434.         PrintLn "@X09▀▀▀▀@X09▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
  435.         Delay 8
  436.         INTEGER013 = 8
  437.         INTEGER014 = 9
  438.         INTEGER015 = 8
  439.         INTEGER016 = 9
  440.         INTEGER017 = 8
  441.         INTEGER018 = 9
  442.         INTEGER019 = 8
  443.         INTEGER020 = 9
  444.         INTEGER022 = 8
  445.         INTEGER023 = 9
  446.         INTEGER030 = 0
  447.         INTEGER035 = 0
  448.         :LABEL018
  449.         If (INTEGER035 == 3) Goto LABEL024
  450.         INTEGER026 = Random(4)
  451.         Select Case (INTEGER026)
  452.             Case "0"
  453.                 Gosub LABEL019
  454.             Case "1"
  455.                 Gosub LABEL020
  456.             Case "2"
  457.                 Gosub LABEL021
  458.             Case "3"
  459.                 Gosub LABEL022
  460.             Case "4"
  461.                 Gosub LABEL023
  462.         End Select
  463.         Goto LABEL018
  464.         :LABEL019
  465.         If (((INTEGER031 == 1) || (INTEGER032 == 1)) || (INTEGER033 == 1)) Return
  466.         If (INTEGER014 == "76") Then
  467.             INTEGER030 = 1
  468.             INTEGER034 = 1
  469.             Gosub LABEL028
  470.         Endif
  471.         Delay 1
  472.         AnsiPos INTEGER014, 12
  473.         Print STRING012
  474.         AnsiPos INTEGER013, 12
  475.         Print " "
  476.         Inc INTEGER013
  477.         Inc INTEGER014
  478.         Return
  479.         :LABEL020
  480.         If (((INTEGER031 == 2) || (INTEGER032 == 2)) || (INTEGER033 == 2)) Return
  481.         If (INTEGER016 == "76") Then
  482.             INTEGER030 = 2
  483.             INTEGER034 = 2
  484.             Gosub LABEL028
  485.         Endif
  486.         Delay 1
  487.         AnsiPos INTEGER016, 14
  488.         Print STRING012
  489.         AnsiPos INTEGER015, 14
  490.         Print " "
  491.         Inc INTEGER015
  492.         Inc INTEGER016
  493.         Return
  494.         :LABEL021
  495.         If (((INTEGER031 == 3) || (INTEGER032 == 3)) || (INTEGER033 == 3)) Return
  496.         If (INTEGER018 == "76") Then
  497.             INTEGER030 = 3
  498.             INTEGER034 = 3
  499.             Gosub LABEL028
  500.         Endif
  501.         Delay 1
  502.         AnsiPos INTEGER018, 16
  503.         Print STRING012
  504.         AnsiPos INTEGER017, 16
  505.         Print " "
  506.         Inc INTEGER017
  507.         Inc INTEGER018
  508.         Return
  509.         :LABEL022
  510.         If (((INTEGER031 == 4) || (INTEGER032 == 4)) || (INTEGER033 == 4)) Return
  511.         If (INTEGER020 == "76") Then
  512.             INTEGER030 = 4
  513.             INTEGER034 = 4
  514.             Gosub LABEL028
  515.         Endif
  516.         Delay 1
  517.         AnsiPos INTEGER020, 18
  518.         Print STRING012
  519.         AnsiPos INTEGER019, 18
  520.         Print " "
  521.         Inc INTEGER019
  522.         Inc INTEGER020
  523.         Return
  524.         :LABEL023
  525.         If (((INTEGER031 == 5) || (INTEGER032 == 5)) || (INTEGER033 == 5)) Return
  526.         If (INTEGER023 == "76") Then
  527.             INTEGER030 = 5
  528.             INTEGER034 = 5
  529.             Gosub LABEL028
  530.         Endif
  531.         Delay 1
  532.         AnsiPos INTEGER023, 20
  533.         Print STRING012
  534.         AnsiPos INTEGER022, 20
  535.         Print " "
  536.         Inc INTEGER022
  537.         Inc INTEGER023
  538.         Return
  539.         :LABEL024
  540.         AnsiPos 20, 8
  541.         PrintLn "                                    "
  542.         AnsiPos 27, 4
  543.         PrintLn "@X0E", TSTRING008(INTEGER031)
  544.         AnsiPos 27, 5
  545.         PrintLn "@X07", TSTRING008(INTEGER032)
  546.         AnsiPos 27, 6
  547.         PrintLn "@X06", TSTRING008(INTEGER033)
  548.         AnsiPos 65, 6
  549.         MONEY003 = TINTEGER027(INTEGER031) * MONEY002
  550.         PrintLn "@X0E", MONEY003
  551.         AnsiPos 21, 8
  552.         Print "@X0F"
  553.         MONEY001 = MONEY001 - MONEY002
  554.         If (INTEGER031 == STRING011) Then
  555.             MONEY001 = MONEY001 + MONEY003
  556.             Print "You Won ", MONEY003
  557.         Else
  558.             Print "Sorry, you lost ", MONEY002
  559.         Endif
  560.         AnsiPos 59, 8
  561.         PrintLn "@X0E", MONEY001, "    "
  562.         Inc TREAL001(INTEGER031)
  563.         TSTRING010(INTEGER031) = "  First"
  564.         TSTRING010(INTEGER032) = "  Second"
  565.         TSTRING010(INTEGER033) = "  Third"
  566.         If (INTEGER028 == INTEGER036) Then
  567.             AnsiPos 27, 15
  568.             PrintLn "@X0E┌────────────────────────────┐"
  569.             AnsiPos 27, 16
  570.             PrintLn "│@X0A Sorry, you're out of turns @X0E│"
  571.             AnsiPos 27, 17
  572.             PrintLn "@X0E└────────────────────────────┘"
  573.             Delay 20
  574.         ElseIf (MinLeft() < 5) Then
  575.             AnsiPos 28, 15
  576.             PrintLn "@X0E┌───────────────────────────┐"
  577.             AnsiPos 28, 16
  578.             PrintLn "│@X0A Sorry, you're out of time @X0E│"
  579.             AnsiPos 28, 17
  580.             PrintLn "@X0E└───────────────────────────┘"
  581.             Delay 20
  582.         ElseIf (MONEY001 > 0) Then
  583.             :LABEL025
  584.             AnsiPos 27, 15
  585.             PrintLn "@X0E┌─────────────────────────────┐"
  586.             AnsiPos 27, 16
  587.             PrintLn "│@X0AWould you like to play again?@X09@X0E│"
  588.             AnsiPos 27, 17
  589.             PrintLn "@X0E└─────────────────────────────┘"
  590.             AnsiPos 40, 18
  591.             STRING013 = ""
  592.             InputStr "Y / N ", STRING013, 14, 1, "YNyn", 0
  593.             If ((STRING013 == "Y") || (STRING013 == "y")) Goto LABEL012
  594.             If ((STRING013 <> "N") && (STRING013 <> "n")) Goto LABEL025
  595.         Else
  596.             AnsiPos 27, 15
  597.             PrintLn "@X0E┌──────────────────────────────┐"
  598.             AnsiPos 27, 16
  599.             PrintLn "│@X0ASorry, you lost all your money@X0E│"
  600.             AnsiPos 27, 17
  601.             PrintLn "@X0E└──────────────────────────────┘"
  602.             Delay 20
  603.         Endif
  604.         :LABEL026
  605.         FCreate 1, PPEPath() + "HORSES.DAT", 1, 3
  606.         For INTEGER024 = 1 To 51
  607.             If (INTEGER037 == INTEGER024) Then
  608.                 TSTRING018(INTEGER037, 1) = U_Name()
  609.                 TSTRING018(INTEGER037, 2) = Date()
  610.                 TSTRING018(INTEGER037, 3) = MONEY001
  611.             Endif
  612.             FPutLn 1, TSTRING018(INTEGER024, 1)
  613.             FPutLn 1, TSTRING018(INTEGER024, 2)
  614.             FPutLn 1, TSTRING018(INTEGER024, 3)
  615.         Next
  616.         FClose 1
  617.         For INTEGER024 = 1 To 50
  618.             TSTRING019(INTEGER024, 1) = TSTRING018(INTEGER024, 1)
  619.             TSTRING019(INTEGER024, 2) = TSTRING018(INTEGER024, 2)
  620.             TSTRING019(INTEGER024, 3) = TSTRING018(INTEGER024, 3)
  621.         Next
  622.         Print "@CLS@@X0D"
  623.         AnsiPos 30, 12
  624.         Print "Sorting."
  625.         :LABEL027
  626.         BOOLEAN003 = 1
  627.         For INTEGER024 = 1 To 99
  628.             STRING014 = INTEGER024 + 1
  629.             If ((TSTRING019(STRING014, 1) <> "NotUsed") && (ToMoney(TSTRING019(STRING014, 3)) > ToMoney(TSTRING019(INTEGER024, 3)))) Then
  630.                 BOOLEAN003 = 0
  631.                 STRING020 = TSTRING019(INTEGER024, 1)
  632.                 STRING021 = TSTRING019(INTEGER024, 2)
  633.                 STRING022 = TSTRING019(INTEGER024, 3)
  634.                 TSTRING019(INTEGER024, 1) = TSTRING019(STRING014, 1)
  635.                 TSTRING019(INTEGER024, 2) = TSTRING019(STRING014, 2)
  636.                 TSTRING019(INTEGER024, 3) = TSTRING019(STRING014, 3)
  637.                 TSTRING019(STRING014, 1) = STRING020
  638.                 TSTRING019(STRING014, 2) = STRING021
  639.                 TSTRING019(STRING014, 3) = STRING022
  640.             Endif
  641.         Next
  642.         Print "."
  643.         If (!BOOLEAN003) Goto LABEL027
  644.         Print "@CLS@ @X0F"
  645.         STRING023 = "Horses High Scores To Date"
  646.         PrintLn Space((74 - Len(STRING023)) / 2) + STRING023
  647.         STRING023 = "══════════════════════════"
  648.         Print "@X0C"
  649.         PrintLn Space((76 - Len(STRING023)) / 2) + STRING023
  650.         PrintLn "@X0E"
  651.         PrintLn Space(16), "   Name                    Date        Score"
  652.         PrintLn "@X0A"
  653.         For INTEGER024 = 1 To 15
  654.             If ((TSTRING019(INTEGER024, 1) <> "NotUsed") && (TSTRING019(INTEGER024, 3) > "$1.00")) Then
  655.                 Print "@X0A"
  656.                 If (TSTRING019(INTEGER024, 1) == U_Name()) Print "@X0B"
  657.                 If (INTEGER024 == 1) Print "@X0F"
  658.                 Print Space(16), Mixed(TSTRING019(INTEGER024, 1)), "@POS:42@", TSTRING019(INTEGER024, 2), "   "
  659.                 PrintLn Right(Space(9) + TSTRING019(INTEGER024, 3), 10)
  660.             Endif
  661.         Next
  662.         PrintLn 
  663.         Print Space(25)
  664.         KeyFlush
  665.         Wait
  666.         If (Exist(PPEPath() + "HORSES.BAT")) Then
  667.             FCreate 1, PPEPath() + "HORSES.SCO", 1, 3
  668.             FPutLn 1, ""
  669.             FPut 1, "@X0F"
  670.             STRING023 = "Horses High Scores To Date"
  671.             FPutLn 1, Space((74 - Len(STRING023)) / 2) + STRING023
  672.             STRING023 = "══════════════════════════"
  673.             FPut 1, "@X0C"
  674.             FPutLn 1, Space((75 - Len(STRING023)) / 2) + STRING023
  675.             FPutLn 1, "@X0E"
  676.             FPutLn 1, Space(16), "   Name                    Date        Score"
  677.             FPutLn 1, "@X0A"
  678.             For INTEGER024 = 1 To 15
  679.                 If ((TSTRING019(INTEGER024, 1) <> "NotUsed") && (TSTRING019(INTEGER024, 3) > "$1.00")) Then
  680.                     FPut 1, "@X0A"
  681.                     If (TSTRING019(INTEGER024, 1) == U_Name()) FPut 1, "@X0B"
  682.                     If (INTEGER024 == 1) FPut 1, "@X0F"
  683.                     FPut 1, Space(16), Mixed(TSTRING019(INTEGER024, 1)), "@POS:42@", TSTRING019(INTEGER024, 2), "   "
  684.                     FPutLn 1, Right(Space(9) + TSTRING019(INTEGER024, 3), 10)
  685.                 Endif
  686.             Next
  687.             FClose 1
  688.             Shell 1, INTEGER024, PPEPath() + "HORSES.BAT", ""
  689.         Endif
  690.         PrintLn 
  691.         Print Space(25)
  692.         KeyFlush
  693.         Cls
  694.     Endif
  695.     If (!BOOLEAN001) Delay 30
  696.     If ((STRING015 == "LOGCALL") || (STRING015 == "LOGBOTH")) Then
  697.         Log "Exited " + PPEName() + ".PPE at " + Left(Time(), 5), 0
  698.     Endif
  699.     End
  700.     :LABEL028
  701.     If (INTEGER031 == 0) Then
  702.         INTEGER031 = INTEGER034
  703.         Inc INTEGER035
  704.         Return
  705.     Endif
  706.     If (INTEGER032 == 0) Then
  707.         INTEGER032 = INTEGER034
  708.         Inc INTEGER035
  709.         Return
  710.     Endif
  711.     If (INTEGER033 == 0) Then
  712.         INTEGER033 = INTEGER034
  713.         Inc INTEGER035
  714.         Return
  715.     Endif
  716.     Return
  717.     :LABEL029
  718.     StartDisp 1
  719.     Cls
  720.     PrintLn " "
  721.     PrintLn "      @X07┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐"
  722.     PrintLn "      ├┼┼@X0F┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┘@X07┼┼┤"
  723.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70┌───────────────────────────────────────────────────────@X7F┐@X77┼@X08┼┼@X07┼┼┤"
  724.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70│                                       @X71                @X7F│@X77┼@X08┼┼@X07┼┼┤"
  725.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70│    ┌─────────────────────────────────────────────@X7F┐    │@X77┼@X08┼┼@X07┼┼┤"
  726.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70│    │                                             @X7F│    │@X77┼@X08┼┼@X07┼┼┤"
  727.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70│    │         @X71PRACTICAL COMPUTER SERVICES@X70         @X7F│    │@X77┼@X08┼┼@X07┼┼┤"
  728.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70│    │                                             @X7F│    │@X77┼@X08┼┼@X07┼┼┤"
  729.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70│    │            @X74 @X70    @X74  @X71PRESENTS@X70                  @X7F│    │@X77┼@X08┼┼@X07┼┼┤"
  730.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70│    │                                        @X7F     │    │@X77┼@X08┼┼@X07┼┼┤"
  731.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70│    └@X7F─────────────────────────────────────────────┘    │@X77┼@X08┼┼@X07┼┼┤"
  732.     PrintLn "      ├┼┼@X0F┼┼@X77┼@X70└@X7F───────────────────────────────────────────────────────┘@X77┼@X08┼┼@X07┼┼┤"
  733.     PrintLn "      ├┼┼@X0F┘@X08┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼@X07┼┼┤"
  734.     PrintLn "      └┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘"
  735.     PrintLn ""
  736.     PrintLn "      @X0D▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄@X0F"
  737.     PrintLn "       @X0E", STRING004, " ", STRING005, "@POS:48@@X0B(c)1996 All Rights Reserved@X0F"
  738.     PrintLn "      @X0D▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀@X0F"
  739.     If (BOOLEAN001) Then
  740.         AnsiPos 10, 21
  741.         PrintLn "@X0B      REGISTERED TO:  @X0A", STRING002, "@X0B at @X0A", STRING003, "@X0F"
  742.         Newline
  743.         Delay 25
  744.         Return
  745.     Endif
  746.     If (BOOLEAN001) Goto LABEL030
  747.     AnsiPos 10, 21
  748.     PrintLn "              @X8CUNREGISTERED EVALUATION COPY@X08"
  749.     Newline
  750.     INTEGER001 = 1
  751.     Color 15
  752.     For INTEGER001 = 10 To 1 Step -1
  753.         Print "                         DELAYING ", INTEGER001, " SECOND(S)..."
  754.         Delay 19
  755.         Backup 80
  756.     Next
  757.     Return
  758.     :LABEL030
  759.     Cls
  760.     Newlines 4
  761.     PrintLn "@POS:23@@X10┌────────────────────────────────@X19┐@X0F"
  762.     PrintLn "@POS:23@@X10│     @X1E @X10   @X1EHorse Race v1.4@X1F    @X1E  @X1F  @X19│@X0F"
  763.     PrintLn "@POS:23@@X10└@X19────────────────────────────────┘@X0F"
  764.     PrintLn "@POS:23@@X10┌────────────────────────────────@X19┐@X0F"
  765.     PrintLn "@POS:23@@X10│       @X1FCopyright (c) 1996@X1A       @X19│@X0F"
  766.     PrintLn "@POS:23@@X10│ @X1C────────────────────────────── @X19│@X0F"
  767.     PrintLn "@POS:23@@X10│  @X1BPractical Computer Services   @X19│@X0F"
  768.     PrintLn "@POS:23@@X10│   @X1B @X10   @X1B483 Klockner Road@X10        @X19│@X0F"
  769.     PrintLn "@POS:23@@X10│      @X1BHamilton, NJ  08619@X13       @X19│@X0F"
  770.     PrintLn "@POS:23@@X10│    @X1B   @X10  @X1B(609) 584-7947@X13         @X19│@X0F"
  771.     PrintLn "@POS:23@@X10│                         @X1E     @X12  @X19│@X0F"
  772.     PrintLn "@POS:23@@X10└@X19────────────────────────────────┘@X0F"
  773.     Delay (5 * 182) / 10
  774.     Cls
  775.     Goto LABEL013
  776.  
  777. ;------------------------------------------------------------------------------
  778. ;
  779. ; Usage report (before postprocessing)
  780. ;
  781. ; ■ Statements used :
  782. ;
  783. ;    5       End
  784. ;    5       Cls
  785. ;    2       Wait
  786. ;    1       Color 
  787. ;    129     Goto 
  788. ;    176     Let 
  789. ;    33      Print 
  790. ;    124     PrintLn 
  791. ;    92      If 
  792. ;    3       FCreate 
  793. ;    6       FOpen 
  794. ;    1       FAppend 
  795. ;    10      FClose 
  796. ;    8       FGet 
  797. ;    6       FPut 
  798. ;    15      FPutLn 
  799. ;    1       StartDisp 
  800. ;    1       GetUser
  801. ;    1       DefColor
  802. ;    4       Log 
  803. ;    3       InputStr 
  804. ;    15      Gosub 
  805. ;    17      Return
  806. ;    15      Delay 
  807. ;    20      Inc 
  808. ;    2       Newline
  809. ;    1       Newlines 
  810. ;    2       GetToken 
  811. ;    1       Shell 
  812. ;    54      AnsiPos 
  813. ;    1       Backup 
  814. ;    2       FDefIn 
  815. ;    2       FDGet 
  816. ;    3       KeyFlush
  817. ;
  818. ;
  819. ; ■ Functions used :
  820. ;
  821. ;    3       -
  822. ;    4       *
  823. ;    9       /
  824. ;    70      +
  825. ;    11      -
  826. ;    59      ==
  827. ;    7       <>
  828. ;    27      <
  829. ;    23      <=
  830. ;    8       >
  831. ;    46      >=
  832. ;    76      !
  833. ;    52      &&
  834. ;    42      ||
  835. ;    12      Len(
  836. ;    1       Upper()
  837. ;    5       Mid()
  838. ;    4       Left()
  839. ;    2       Right()
  840. ;    17      Space()
  841. ;    2       Asc()
  842. ;    1       RTrim()
  843. ;    4       Random()
  844. ;    3       Date()
  845. ;    3       Time()
  846. ;    5       U_Name()
  847. ;    2       Strip()
  848. ;    1       String()
  849. ;    16      PPEPath()
  850. ;    2       MinLeft()
  851. ;    5       Exist()
  852. ;    1       AnsiOn()
  853. ;    8       PPEName()
  854. ;    5       ToMoney()
  855. ;    3       Mixed()
  856. ;    1       FmtReal()
  857. ;
  858. ;------------------------------------------------------------------------------
  859. ;
  860. ; Analysis flags : S
  861. ;
  862. ; S - Shell to DOS ■ 5
  863. ;     This may be normal if the PPE need to execute an external command,
  864. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  865. ;     or usefull (sorting, maintenance,...). Check!
  866. ;     ■ Search for : SHELL
  867. ;
  868. ;------------------------------------------------------------------------------
  869. ;
  870. ; Postprocessing report
  871. ;
  872. ;    23      For/Next
  873. ;    0       While/EndWhile
  874. ;    33      If/Then or If/Then/Else
  875. ;    2       Select Case
  876. ;
  877. ;------------------------------------------------------------------------------
  878. ;                 AEGiS Corp - Break the routines, code against the machines!
  879. ;------------------------------------------------------------------------------
  880.